package com.gengzp.system.facade;

import com.gengzp.common.model.user.entity.SysUser;
import com.gengzp.common.model.user.resp.SearchSysUserCountResp;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * @ClassName SysUserFacade
 * @Description 系统角色管理模块门面层接口
 * @Author gengzp
 * @Date 2025/9/8 20:32
 */
public interface SysUserFacade {

    /**
     * 根据id查询系统用户
     *
     * @param userId 用户id
     * @return 系统用户
     */
    SysUser searchSysUserById(Long userId);

    /**
     * 根据昵称模糊查询系统用户
     *
     * @param nickname 用户昵称
     * @return 系统用户列表
     */
    List<SysUser> fuzzySearchSysUsersByNickname(String nickname);

    /**
     * 根据昵称查询系统用户
     *
     * @param nickname 用户昵称
     * @return 系统用户
     */
    SysUser searchSysUserByNickname(String nickname);

    /**
     * 根据用户id查询系统用户
     *
     * @param userIds 用户id列表
     * @return 系统用户列表
     */
    List<SysUser> searchSysUsersByIds(List<Long> userIds);

    /**
     * 根据用户id查询用户对应昵称映射
     *
     * @param userIds 用户id列表
     * @return 用户id对应昵称映射
     */
    Map<Long, String> searchSysUserId2NicknameMapByIds(Collection<Long> userIds);

    /**
     * 查询系统用户计数信息
     *
     * @return 系统用户计数信息
     */
    SearchSysUserCountResp searchSysUserCount();

}
